package codebase;

import java.rmi.Remote;
import java.rmi.RemoteException;
import java.util.ArrayList;
import java.util.HashMap;

import modele.Carte;
import modele.Configuration;
import modele.Coordonnee;
import modele.Joueur;
import modele.Puissance;
import modele.Region;
import modele.Tour;

public interface IPartie extends Remote {

	public final static Carte carte = Carte.carte;

	// public Partie getPartie() throws RemoteException;

	public Configuration getConfig() throws RemoteException;

	public Carte getCarte() throws RemoteException;

	public int getNbJoueurs() throws RemoteException;

	public void ajouterJoueur(IJoueur j) throws RemoteException;

	public ArrayList<IJoueur> getListeJoueur() throws RemoteException;

	public void connect(ICreerPartieReseau confPartie) throws RemoteException;

	public void connectIntJeu(IJeuInterface jeuInterface) throws RemoteException;

	public void notifierIntJeu() throws RemoteException;

	public void supprimerJoueur(IJoueur j) throws RemoteException;

	public Tour getDernierTour() throws RemoteException;

	public void setNomJoueur(IJoueur j, String nom) throws RemoteException;

	public HashMap<String, String> gerePuissanceJoueur(int idAction, IJoueur j, Puissance p)
			throws RemoteException;

	public void gerePuissanceJoueur2(IJoueur j, ArrayList<Puissance> p) throws RemoteException;

	public void setConfigAttribute(int idAttribut, int valeur) throws RemoteException;

	public IJoueur getJoueurByName(String name) throws RemoteException;

	public void envoyerMessage(String s) throws RemoteException;

	public void passerAuJeu() throws RemoteException;

	public void sendMessage(String msg, String tabName, ArrayList<String> listeJoueursChat)
			throws RemoteException;

	public void arbitrer() throws RemoteException;

	public void addOrdre(String s) throws RemoteException;

	public void removeOrdre(String s) throws RemoteException;

	public void phaseSuivante() throws RemoteException;

	public void afficheEtatPartie() throws RemoteException;

	public Joueur getJoueurWithPuissance(Puissance p) throws RemoteException;

	public void initGroupePuissance(int nbJoueur) throws RemoteException;

	public void initElementCarteDepart() throws RemoteException;

	public boolean regionExist(String nomReg) throws RemoteException;

	public Region getRegion(String nomReg) throws RemoteException;

	public Region getRegionWithPos(Coordonnee coo) throws RemoteException;

}